約 4,127,873 件
https://w.atwiki.jp/dragon109/pages/24.html
バージョン apache 2.2.11(nossl) Tomcat 5.5.27 JDK 6 update 12 eclipse java ganymede SR1 以下、こちらのサイトを参考にさせていただきました。 JDKインストール JDKインストール場所 C \Program Files\Java\jdk1.6.0_12 JREインストール場所 C \Program Files\Java\jre6 JDKインストール後設定 PATHの追加 PATH=(既存の設定);C \Program Files\Java\jdk1.6.0_12\bin JAVA_HOMEの設定 JAVA_HOME=C \Program Files\Java\jdk1.6.0_12 Tomcatインストール Choose Components Normal Choose Install Location C \Program Files\Apache Software Foundation\Tomcat 5.5 Java Virtual Machine C \Program Files\Java\jdk1.6.0_12 Tomcatインストール後設定 動作確認 http //localhost 8080/ にアクセスし、表示されることを確認する。 CATALINA_HOMEの設定 CATALINA_HOME=C \Program Files\Apache Software Foundation\Tomcat 5.5 サーブレットアプリケーションのコンパイル javac -classpath "%CATALINA_HOME%\lib\servlet-api.jar" HelloWorld.java ※PATH変数、CATALINA_HOME変数が定義してあること。 アプリケーションの作成と配置 アプリケーションの構成 ディレクトリの作成 ルートディレクトリ c \servlet-sample\helloworld\ c \servlet-sample\helloworld\img \WEB-INF \WEB-INF\classes HTMLファイル作成 ファイル名 (c \servlet-sample\helloworld\)index.html html head title HelloWorld /title /head body br img src="./img/p1.png" a href="/hello/helloworld" クリックして下さい /a br /body /html 画像ファイル作成 ファイル名 (c \servlet-sample\helloworld\img\p1.png) classファイルの作成、配置 ファイル名 (c \)HelloWorld.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" html "); out.println(" head "); out.println(" title Hello World! /title "); out.println(" /head "); out.println(" body "); out.println(" h1 Hello World! /h1 "); out.println(" /body "); out.println(" /html "); } } で、コンパイルする。 javac -classpath "%CATALINA_HOME%\common\lib\servlet-api.jar" HelloWorld.java で、できあがったHelloWorld.classをc \servlet-sample\helloworld\WEB-INF\classesに格納する。 コンテキストの設定 コンテキストの設定ファイルの作成 ファイル名 (%CATALINA_HOME%\conf\Catalina\localhost\)hello.xml Context path="/hello" docBase="c /servlet-sample/helloworld"/ ※docBase ルートディレクトリ ※path http //localhost 8080/hello/index.html ^^^^^ 作成後、Tomcatを再起動する。 HTMLの表示テスト http //localhost 8080/hello/index.html にアクセスし、表示されることを確認する。 Tomcat Managerでの確認 http //localhost 8080/ にアクセスし、画面左上段の「Tomcat Manager」をクリックする。 ログイン後、「アプリケーション」カテゴリの一覧に今回追加したコンテキスト(/hello)があることを確認する。 web.xmlの記述 web.xmlを作成する ファイル名 (c \servlet-sample\helloworld\WEB-INF\)web.xml ?xml version="1.0" encoding="ISO-8859-1"? web-app xmlns="http //java.sun.com/xml/ns/j2ee" xmlns xsi="http //www.w3.org/2001/XMLSchema-instance" xsi schemaLocation="http //java.sun.com/xml/ns/j2ee http //java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" servlet servlet-name helloworld /servlet-name servlet-class HelloWorld /servlet-class /servlet servlet-mapping servlet-name helloworld /servlet-name url-pattern /helloworld /url-pattern /servlet-mapping /web-app ※1~6行目までは、%CATALINA_HOME%\conf\web.xmlを参考にする。 http //localhost 8080/hello/helloworld にアクセスし、「HelloWorld」と表示されることを確認する。 サーブレットの基本 基本パッケージ javax.servletパッケージ インターフェース Filter FilterChain FilterConfig RequestDispatcher Servlet ServletConfig ServletContext ServletContextAttributeListener ServletContextListener ServletRequest ServletRequestAttributeListener ServletRequestListener ServletResponse SingleThreadModel クラス GenericServlet ServletContextAttributeEvent ServletContextEvent ServletInputStream ServletOutputStream ServletRequestAttributeEvent ServletRequestEvent ServletRequestWrapper ServletResponseWrapper Exceptions ServletException UnavailableException javax.servlet.httpパッケージ インターフェース HttpServletRequest HttpServletResponse HttpSession HttpSessionActivationListener HttpSessionAttributeListener HttpSessionBindingListener HttpSessionContext HttpSessionListener クラス Cookie HttpServlet HttpServletRequestWrapper HttpServletResponseWrapper HttpSessionBindingEvent HttpSessionEvent HttpUtil HttpServletクラスとメソッド HttpServletクラスのメソッド HTTPメソッド メソッド GET protected void doGet(HttpServletRequest req, HttpServletResponse resp) POST protected void doPost(HttpServletRequest req, HttpServletResponse resp) PUT protected void doPut(HttpServletRequest req, HttpServletResponse resp) DELETE protected void doDelete(HttpServletRequest req, HttpServletResponse resp) HEAD protected void doHead(HttpServletRequest req, HttpServletResponse resp) TRACE protected void doTrace(HttpServletRequest req, HttpServletResponse resp) OPTIONS protected void doOptions(HttpServletRequest req, HttpServletResponse resp) サーブレットの基本形 HttpServletクラスの継承 public class HelloWorld extends HttpServlet{ ・・・・ } HTTPメソッドに対応したメソッドの実装 public class HelloWorld extends HttpServlet{ public void doGet}(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ ・・・・ } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ ・・・・ } } ※doGet()、doPost()どちらかでも良い。 doGetメソッドとdoPostメソッド こちらを参照 URL http //localhost 8080/sample/Sample1 アプリケーション配置場所 c \servlet-sample\sample\ web.xmlファイル c \servlet-sample\sample\WEB-INF\web.xml コンテキストファイル C \Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\sample.xml サーブレットのライフサイクルとインスタンス変数 インスタンス変数を用いたサンプル import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Sample extends HttpServlet { int count = 0; // ←メソッド外に書かれた変数が「インスタンス変数」 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ int local_count = 0; } } この変数は全てのスレッドで共有して利用される変数ですので、同じ変数に対して別々のスレッドがそれぞれ参照したり値を変更したりする事が出来ます。 インスタンス変数の簡単なサンプル こちらを参照 URL http //localhost 8080/sample/Sample2 アプリケーション配置場所 c \servlet-sample\sample\ web.xmlファイル c \servlet-sample\sample\WEB-INF\web.xml コンテキストファイル C \Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\sample.xml initメソッドとdestroyメソッド initメソッド import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Sample extends HttpServlet { public void init() throws ServletException{ // ←initメソッド /* 初期化処理 */ } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ /* ・・・・ */ } } initメソッドはインスタンス作成後に一度だけ呼ばれるメソッドですので、インスタンス変数の初期化などに利用します。 destroyメソッド import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Sample extends HttpServlet { public void init() throws ServletException{ /* 初期化処理 */ } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ /* ・・・・ */ } public void destroy(){ // ←destroyメソッド /* 終了処理 */ } } initメソッド、destroyメソッドの簡単なサンプル こちらを参照 URL http //localhost 8080/sample/Sample3 アプリケーション配置場所 c \servlet-sample\sample\ web.xmlファイル c \servlet-sample\sample\WEB-INF\web.xml コンテキストファイル C \Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\sample.xml ログファイル C \Program Files\Apache Software Foundation\Tomcat 5.5\logs\localhost.[YYYY-MM-DD].log
https://w.atwiki.jp/hanaoka/pages/11.html
error 致命的 エンドポイントを初期化中のエラーです 2003/10/12 11 01 11 org.apache.coyote.http11.Http11Protocol init 致命的 エンドポイントを初期化中のエラーです java.net.BindException Address already in use JVM_Bind 8080 at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint (PoolTcpEndpoint.java 280) Tomcatがデフォルトで使用する"8080"ポートが使用中の場合あり. conf\server.xmlのportを8080以外に変更してみる. Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8090" ←ココ!! minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false" disableUploadTimeout="true" / ブラウザでアクセスする場合はhttp //localhost 8080/ではなくhttp //localhost 8090/となる.
https://w.atwiki.jp/subculture/pages/19.html
Tomcat download 0.はじめに 作業日 2007/11/5 Tomcatのバージョン 6.0.14 1.Tomcatをダウンロードする 1.1.http //tomcat.apache.org にアクセスし、「Download」欄の「Tomcat 6.x」をクリックする。 1.2.ページ下にある「Binary Distributions」の「Windows Service Installer」をダウンロードする。このファイルをダウンロードして実行すると、インストーラが走るので楽。 2.Tomcatをインストールする 2.1.ダウンロードしたファイル(ファイル名 「apache-tomcat-6.0.14.exe)を実行する。 2.2.「Next」をクリックする。 2.3.「I Agree」をクリックする。 2.4.「Next」をクリックする。 2.5.好きな保存先を選択し、「Next」をクリックする。 ここでは、デフォルトのままとする。 2.6.必要に応じユーザ名、パスワードなどを変更し、「Next」をクリックする。 ここでは、デフォルトのままとする。 2.7.JREをインストールしたフォルダを指定し、「Install」をクリックする。 インストール先をデフォルトのままにしていれば、「C \Program Files\Java\jre1.x.x_x」となるはず。 2.8.チェックボックスのチェックを外し、「Finish」をクリックする。 これで、Tomcatのインストール完了。
https://w.atwiki.jp/m_shige1979/pages/752.html
初期設定 ダウンロード Javaのインストールを完了しておく このサイトよりダウンロードを行なう インストール 解凍 tar zxf apache-tomcat-6.0.29.tar.gz フォルダを変更 mv apache-tomcat-6.0.29 /usr/local/tomcat シェルを作成 vi /etc/profile.d/tomcat.sh ######################## export JAVA_HOME=/usr/local/jdk export PATH=$PATH $JAVA_HOME/bin export CLASSPATH=. $JAVA_HOME/jre/lib $JAVA_HOME/lib $JAVA_HOME/lib/tools.jar export TOMCAT_HOME=/usr/local/tomcat export CATALINA_HOME=/usr/local/tomcat export CLASSPATH=$CLASSPATH $CATALINA_HOME/common/lib ######################## 自動起動用シェル vi /etc/rc.d/init.d/tomcat ######################## #!/bin/bash # # Startup script for the tomcat # # chkconfig 345 80 15 # description Tomcat is a Servlet+JSP Engine. # Source function library. . /etc/rc.d/init.d/functions source /etc/profile.d/tomcat.sh start(){ if [ -z $(/sbin/pidof java) ]; then echo "Starting tomcat" /usr/local/tomcat/bin/startup.sh touch /var/lock/subsys/tomcat else echo "tomcat allready running" fi } stop(){ if [ ! -z $(/sbin/pidof java) ]; then echo "Shutting down tomcat" /usr/local/tomcat/bin/shutdown.sh until [ -z $(/sbin/pidof java) ]; do ; done rm -f /var/lock/subsys/tomcat else echo "tomcat not running" fi } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) /usr/local/tomcat/bin/catalina.sh version ;; *) echo "Usage $0 {start|stop|restart|status}" esac exit 0 ######################## # 実行権限付加 chmod +x /etc/rc.d/init.d/tomcat # 起動 /etc/rc.d/init.d/tomcat start # 登録 chkconfig --add tomcat 確認 http //localhost 8080/examples/servlets/servlet/HelloWorldExampleで確認
https://w.atwiki.jp/subculture/pages/25.html
eclipseでのTomcatの設定 0.はじめに 作業日 2007/11/7 Tomcatをインストールしていることを前提とする。 eclipseのバージョン 3.3(Eclipse IDE for Java EE Developers) Tomcatのバージョン 6.0.14 Tomcatのインストールについては、こちら 1.上部の「Window」メニューから「Preferences...」を選択する。 2.「Tomcat」を選択し、「Tomcatバージョン」と「Tomcatホーム」を指定し、「OK」をクリックする。 例 項目 記入例 Tomcatバージョン 6.x Tomcatホーム C \Program Files\Apache Software Foundation\Tomcat 6.0
https://w.atwiki.jp/dotcom/pages/155.html
目次 目次 Tomcatってなによ 関連 ちなみに Tomcatってなによ クライアントからのお願いをサーバーに渡したりサーバーからの情報でWebページを作成して表示するの。 CGIっぽいかも。 関連 jsp? サーブレット? HTML ちなみに Strutsを入れてやってみようと思ったら、それ以前にTomcatの知識がないと分けわかんないことに気づいたのでいれてみたです。 あまりjavaのプログラミング技術がなくても簡単な応答jspとかなら作れるかも。 HTMLで表示するのでHTMLタグがわからないといけないかしら。 ああでも実際に開発で使う時は表示系を専門の人にお願いすると思うのでこれはいいのかしら。
https://w.atwiki.jp/tamorintech/pages/14.html
別ページにまとめてるもの。 Javaのプリミティブラッパークラスはすべて不変である。 サーブレットのセッション管理(2012/3/18 旧ブログから移行) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) 集約とコンポジション(2012/3/18 旧ブログから移行) サーブレットコンテナ(2012/3/18 旧ブログから移行) JNDIってどんなものなのか。(2012/3/7)何となくの理解。 Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行)DB側の話。 Java側の話。 上記からわかったこと! PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) アノテーションとは。(2012/2/4 旧wikiから移行) 別ページにまとめてるもの。 log4j Android Javaのプリミティブラッパークラスはすべて不変である。 よって、ラッパークラスオブジェクトを参照値渡ししてメソッド内で計算しても、メソッド呼び出し側のオブジェクトには結果が反映されない。 private void exec() { Integer value = new Integer(5); System.out.println("メソッド実行前のint値 " + value.toString()); increment(value); System.out.println("メソッド実行後のint値 " + value.toString()); } private void increment(Integer integer) { // 内部的には // integer = new Integer( integer.intValue() + 1 ); // のようなことが行われている。つまりメソッド内のinteger は別の新しいオブジェクトを参照することになる。 integer++; System.out.println("メソッド内での計算結果 " + integer.toString()); } メソッド実行前のint値 5 メソッド内での計算結果 6 メソッド実行後のint値 5 サーブレットのセッション管理(2012/3/18 旧ブログから移行) 今日はホントにメモだけ!(時間ないからね!) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) とりあえずメモだけアップしておく。まだ目的は達成してないけど・・・。 知りたいことは以下のこと。Tomcat(サーブレットコンテナ)がクラスをロードしたり、サーブレットのinit / service / destroy の呼び出しを行っている部分の詳細な動きが知りたい。 JSPリソースへのリクエストを受け取ったとき、それをJSPから変換したサーブレットへのリクエストへと切替えている部分の詳細な動き。 Tomcatはサーブレットのインスタンスをどのようにしてシングルトンで管理しているのか。 やっぱりTomcatのソースをじっくり読みたい・・・。 集約とコンポジション(2012/3/18 旧ブログから移行) 新人の後輩から質問されて答えられず。そもそも明確な違いは定義しにくく、「曖昧」らしい。 集約とコンポジション、Javaのコードに落とせばどちらも同じ。「全体」のメンバ変数に「部分」のオブジェクトが定義されていることになる。 上記は車クラスが「全体」であるのに対し、車体・エンジン・タイヤクラスが「部分」にあたる。ひし形の色は白なので集約の関連があることを表している。 車クラスをJavaコードにすると以下のようになる。 public class Car { private Body body; private Engine engine; private Tyre tyre; ・・・ } クラス図のひし形の部分が黒で塗りつぶされていて、コンポジションをあらわしていたとしても車クラスは上記と同じコードとなる(のはず)。 他の技術系の記事を参考にすると、コンポジションは両オブジェクト間のライフサイクルが同じ、もしくは強い依存の関係にある場合に使用する。 ということは、集約とコンポジションでJavaコードに違いが出てくるところと言えばオブジェクトの生成の仕方とかだろうか? 車クラスと車体・エンジン・タイヤクラスがコンポジションの関連にある場合、車クラスのコンストラクタで車体・エンジン・タイヤクラスのオブジェクトを必ずnewするとか。もしくはメンバ変数の宣言部でnewしちゃうとか。 public class Car { private Body body = new Body(); private Engine engine = new Engine(); private Tyre tyre = new Tyre(); ・・・ } まぁその辺りも想定するシナリオとかで変わってくる気がする…。 とにかく、集約とコンポジションの違いについて深く悩むことにあまり価値はないと自分に言い聞かせる。(笑) サーブレットコンテナ(2012/3/18 旧ブログから移行) サーブレットコンテナというキーワードで少し勉強した。一番知りたかったのは、「Webサーバ」と「サーブレットコンテナ」の機能の切り分け。 サーブレットコンテナについては前よりイメージがわいてきた。Servlet API / JSP API の参照実装(RI)であること。HttpServletの実装をTomcat等のサーブレットコンテナは持っている。 サーブレットのインスタンス化や破棄など、ライフサイクルの管理を行っていること。 3つの動作形態の種類があること。スタンドアロン型-サーブレットコンテナ自身がWebサーバを内蔵している。Tomcatはこれにあたるので、単体でサーブレットアプリケーションを動かせる。 内部プロセス型 外部プロセス型 Tomcatの設定ファイルを覗いてみるとなんとなく仕組みがわかってくる。なんとなくだが・・・ Connector がWebサーバ機能を担う定義なんじゃなかろうか。 他のWebサーバを使用するため、TomcatのWebサーバの機能をOFFにするにはserver.xmlの Connector 要素を削除するって書いてあったし。 ここでの機能は、クライアントからのリクエストをサーブレットコンテナ(エンジン)に渡すこと。 結局、Webサーバの詳細な機能ははっきりとわからなかった。サーブレットコンテナというキーワードを絡めずに、Webサーバそのものについて今後調べないと! ところで、サーブレットアプリケーションのメインプログラムは何なのか?Javaプログラムはmainメソッドの起動から始まる、と教えてもらったはず。ちょっと調べてみたところ、Tomcatの場合、Bootstrapクラスがそれに当たる模様。 確かにBootstrapクラスにはmainメソッドがあり、Tomcatの起動用スクリプトを見てみてもBootstrapクラスをjavaコマンドにより実行しているようだ。 ただこのBootstrap.classがbootstrap.jarとcatalina.jarという二つのjarファイルに存在する。 これは同じクラス(全く同じモジュール)と考えてよいのか? あ、ちなみにここまで、Tomcat 6についての話。。 5.5のディレクトリ中身を見てみたらまたちょっと違うようだ。あまり気にしなくても大丈夫かな…? JNDIってどんなものなのか。(2012/3/7) JNDIとはJava Naming and Directory Interfaceの頭文字を取ったもので、Javaから •ネーミング・サービス •ディレクトリー・サービス を扱うためのインターフェイスを規定した仕様です。 だそう。こういう定義は他でもいくつか目にするんだが、いまいちイメージがわかない。 何となくの理解。 本質ではなくwebアプリ(サーブレット)に限定した理解だが、DB接続をJNDIで行う場合は以下な感じ。DB接続情報(=DataSource)をサーバーの設定ファイル(Tomcatの場合はcontext.xml)に定義する。その実態はjava.sql.DataSourceクラス(のオブジェクト?)である。 Javaプログラムでは、java.naming.InitialContext#lookupメソッドで、定義したDataSourceを取得する。 DataSource#getConnectionメソッドでjava.sql.Connectionを取得し、DB接続が開始できる。 以下を読むと上記の実装例があり、どんなものかが少しわかった。ありがたい。http //www.javaroad.jp/opensource/js_tomcat8.htm http //blogs.yahoo.co.jp/kensinisnek/11707751.html Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行) DB側の話。 標準のSQL(?)では、日付・時刻のデータを持つカラムの型は以下のとおりとなっているようだ。DATA日付のみのデータを持つ。 TIME時刻のみのデータを持つ。精度(桁数?)は指定できる。 TIMESTAMP日付+時刻のデータを持つ。精度は指定できる。 Java側の話。 ここで扱う日付・日時に関するクラスの継承関係は以下のとおり。java.util.Datejava.sql.Date java.sql.Time java.sql.Timestamp java.util.Date日付と日時の両方のデータを持つ。時刻はミリ秒まで。 java.sql.Date日付のデータのみ持つ。基底クラス(java.util.Date)の時・分・秒・ミリ秒には0が設定される。 java.sql.Time時刻のデータのみ持つ。基底クラス(java.util.Date)の年・月・日には1970年1月1日が設定される。 java.sql.Timestamp日付と時刻のデータを持つ。時刻はナノ秒まで。 java.sql.ResultSetインターフェースについて。getDateメソッド:java.sql.Dateを返す。 getTimeメソッド:java.sql.Timeを返す。 getTimestampメソッド:java.sql.Timestampを返す。 上記からわかったこと! テーブルに対応するデータオブジェクト(エンティティクラス)を設計するとき、DBのDATE、TIME、TIMESTAMPのカラムに対応するプロパティは、java.sqlパッケージのクラスを使えってことだね。 PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) PATH環境変数は、OSがプロンプトから入力されたコマンドに対するプログラムを検索する際の検索先である。 CLASSPATH環境変数はJavaソースのコンパイル時、プログラム実行時に必要となるクラスファイルを検索する際の検索先である。 よって2つはなんら関係ないものである。 サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットにおける認証方式の種類は以下のものがある。Basic認証:HTTPのBasic認証を使った方式。 Digest認証:HTTPのBasic認証を使うが、パスワードをダイジェストエンコードして暗号化する。 Form認証:HTMLのformを使ってユーザーIDとパスワードを入力する。 Client-Cert認証:クライアント証明書を使って認証を行う方式。 Tomcat標準のレルムレルムとは、ユーザーIDとパスワードをサーバー側でどのように管理するかの設定方法である。XMLベースのテキストファイルやデータベース等がある。 UserDatabaseRealmTomcatでデフォルトで設定されている方式。 ID、パスワード、ロールをtomcat-user.xmlファイルに記載する。 UserDatabaseに対して行った変更が変更情報としてtomcat-user.xmlファイルに書き込まれる? JDBCRealmID、パスワード、ロールをデータベースに格納し、JDBC経由で認証を行う。 JNDIRealmNIS、ActiveDirectory等のディレクトリサービスにID、パスワード、ロールを格納しJNDI経由で認証を行う。 DataSourceRealmJDBC経由で認証を行うが、JDBCへの接続にJNDIルックアップを使用する。 サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) サーブレットのインスタンスは(基本的に)1つのみサーブレットコンテナにより作成される。 クライアントからの要求は複数同時に処理される。1リクエスト=1スレッドと考えてよい。 スレッドに関して、サーブレットコンテナは以下の特徴がある。サーブレットコンテナはスレッドプールを持っており、そこに複数のスレッドを蓄えている。 サーブレットコンテナはクライアントからリクエストを受け付けると空きスレッドを割り当て、サーブレットに渡して処理を移譲する。サーブレットのインスタンス数は1つである。 スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) ThreadLocalは、スレッド毎の値を保持する為のクラス。 あるクラス(のインスタンス)がマルチスレッドで呼ばれる際に、スレッド毎に異なる値(インスタンス)を使いたい場合に使用する。 自分でThread(やRunnable)を使ってマルチスレッド化しているならスレッド毎の値が保持できるので、ThreadLocalを使用しても意味がない。 しかし、Webアプリケーション(サーブレット)は1つのインスタンスがマルチスレッドで呼ばれるので、そのスレッド毎に別のインスタンスを保持したいときはとても便利である。 アノテーションとは。(2012/2/4 旧wikiから移行) アノテーションとは、プログラムの動作に影響を与えない注釈、メタデータ。クラスやメソッド、パッケージ等に付与する。 コメントとの主な違いは以下のとおり。プログラムでアノテーションを読み取って処理できる。 アノテーションはコンパイラの動作に影響を与える。 標準アノテーションとして以下のようなものが定義されている。(J2SE 5.0)Override Deprecatedそのメソッドの使用が推奨されないことを示す。(Javadocの@deprecatedと同じ意味を持つ。) そのメソッドを使用するとコンパイル時に警告が出る。 SuppressWarningコンパイル時の警告を抑制する。 抑制する警告の種別はアノテーションの文字列配列の引数を渡すことにより指定が可能。 アノテーションの定義の仕方。「@interface」でアノテーションが定義できる。 以下のように型定義の本体が空のアノテーションをマーカーアノテーションという。 public @inteface Myannotation{ } 同じアノテーションをクラス、メンバ変数、メソッド、それぞれに適用できるようだ。 @Myannotation() public class TestMain { @Myannotation() private String var; @Myannotation() public static void main(String[] args) { } }
https://w.atwiki.jp/chapati4it/pages/136.html
Windowsで開発したTomcatのアプリをwarファイルにして、ubunts12.04を入れたVMからdotcloudにデプロイする。 Tomcatでサーブレットを触ってみたら、dotcloudにTomcatで作ったwebアプリをデプロイしてみたくなって、簡単に出来るだろうと思ってたら意外と苦労しました。 目次 アプリケーションの作成 アプリケーションをwarファイルにする VMにwarファイルアップロード dotcloudにアプリケーション仮作成 アプリケーションをdotcloudに送信 アプリの開発はサーブレットを作ってみる参照 warファイルの作成は【Java】EclipseでTomcatプロジェクトのWARファイルを作成 | cozzbox参照 Dotcloudの環境設定はdotCloud - Installing the CLI参照 ディレクトリ作成 まず、ホームディレクトリに「dotcloud/tomcat/first」ってディレクトリを作成します(自分の好きなディレクトリでよいです) コマンド例 mkdir -p ~/dotcloud/tomcat/first cd ~/dotcloud/tomcat/first dotcloudのアプリ作成 「dotcloud create ~」で、dotcloud側にアプリを作成します。 既に作成しているアプリとディレクトリを紐付ける場合は、「dotcloud connect ~」になるのではないかと思います。 コマンド例 dotcloud create first == Creating a sandbox application named "first" == Application "first" created. Connect the current directory to "first"? [Y/n] y == Connecting with the application "first" == Connected with default push options --rsync 途中の選択肢はyでいいと思います。 英語の文章をなんとなくみた感じだと、ここのディレクトリと「first」アプリを紐付けちゃうよ?って意味だと思いました。 dotcloud.yml作成 「~/dotcloud/tomcat/first/dotcloud.yml」を作成します。 コマンド nano dotcloud.yml 内容 www type java 「dotcloud.yml」の内容はこれだけでやりました、 「approot ~」をつけたら上手く出来なかったのですorz warファイルアップロード FFFTPで、VMの「~/dotcloud/tomcat/first/」にJava/Tomcat/サーブレットを作ってみるで作ったアプリのwarファイルをアップロードします。 アップロードしたwarファイルの名前を「ROOT.war」に変更します。「ROOT.war」以外だと上手く行きませんでした…不思議orz ※dotcloudにwarファイルをデプロイすると、通常「http //first-chapati.dotcloud.com/warファイルの名前/」がアプリのルートディレクトリになるのですが、ファイル名を「ROOT.war」にすると、「warファイルの名前」の部分が不要になる便利な裏ワザみたいです。 warファイルのデプロイ 「dotcloud push」で、warファイルをdotcloudのアプリに向かってプッシュします。 アプリを修正したら、またここのディレクトリに置いてプッシュすればいいみたいです。 $ dotcloud push == Pushing code with rsync from "./" to application first building file list ... done ./ ROOT.war dotcloud.yml .dotcloud/ .dotcloud/config 省略 == Application is live at http //first-chapati.dotcloud.com 最後に表示されたURLにアクセスすると、ちゃんとJava/Tomcat/サーブレットを作ってみるで作った画面が表示されました。 Tomcatで作成したwebアプリは、Tomcat以外のサーブレットコンテナ(JBoss、Geronimo、Websphere、Jettyなど)でも基本的に動く物らしいです。 dotcloudには、サーブレットコンテナとして「Jetty」が入っているからwarファイルをデプロイ出来るみたいでした。 Tomcatサンプル Tomcatメモ Tomcat7.0.37のインストールとeclipseの設定(Windows) サーブレットを作ってみる Tomcat7のインストールとwarファイルのデプロイ(ubunts12.04) warファイルをdotcloudにデプロイ サーブレットからJSPに遷移するサンプル サーブレットからCSVファイルをダウンロードするサンプル サーブレットからCSVファイルをダウンロードするサンプル(日本語ファイル名) サーブレットからファイルをダウンロードするサンプル(日本語ファイル名) Basic認証(UserDatabaseRealm)+DIGEST認証 JFreeChartで動的にグラフを出力するサンプル ファイルをアップロードするサンプル(Commons FileUplaod) クロスサイトスクリプティング脆弱性を体験してみるサンプル コメント 名前
https://w.atwiki.jp/nisya/pages/20.html
注)「#」の場合、rootユーザにて、「$」の場合、一般ユーザで操作 参考URL ・http //www.knowd.co.jp/staff/rotake/java-tomcat.html JAVAのバージョンの注意 J2SDK-1.5.X.XX がインストールされていること。 JSDK設定はこちら ダウンロード ・http //tomcat.apache.org/download-55.cgi ・06/04/27時点で、apache-tomcat-5.5.17.tar.gz 展開 # tar zxvf apache-tomcat-5.5.17.tar.gz 直下に、apache-tomcat-5.5.17フォルダが作成される。 /usr/java/配下に移動し、シンボリンクを貼る。 # mv apache-tomcat-5.5.17 /usr/java # ln -s /usr/java/apache-tomcat-5.5.17 /usr/local/tomcat5 環境変数設定し、取り込み # vi /etc/profile 以下の行を最終行に追加する。 CATALINA_HOME=/usr/local/tomcat5 PATH=$PATH $CATALINA_HOME/bin export CATALINA_HOME PATH # source /etc/profile テスト tomcat起動 # startup.sh WEBブラウザで、http //localhost 8080に接続 tomcat底止 # shutdown.sh 発生トラブル いまのところなし
https://w.atwiki.jp/shin-b/pages/17.html
インストール・設定手順 ファイルの取得 http //tomcat.apache.org/から最新モジュールを取得する。 インストールする。 ... # wget http //ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.26/bin/apache-tomcat-6.0.24.tar.gz # gunzip -c apache-tomcat-6.0.26.tar.gz |tar xvf - # mv apache-tomcat-6.0.26 /opt/tomcat6 # groupadd tomcat # useradd -d /opt/tomcat6 -s /usr/bin/false -g tomcat tomcat # chown -R tomcat tomcat /opt/tomcat6 自動起動するよう設定する。 # cp -p /opt/tomcat6/bin/jsvc.tar.gz /tmp/ # cd /tmp # gunzip -c jsvc.tar.gz|tar xvf - # cd jsvc-src # export PATH=. $PATH /usr/sfw/bin /usr/ccs/bin # chmod +x configure # ./configure --with-java=/usr/java # gmake # chown tomcat tomcat jsvc # mv jsvc /opt/tomcat6/bin/ # cp -p /tmp/jsvc-src/native/Tomcat5.sh /etc/init.d/jsvc # cd /; rm -rf /tmp/jsvc-src /tmp/jsvc.tar.gz # vi /etc/init.d/jsvc JAVA_HOME=/usr/java CATALINA_HOME=/opt/tomcat6 DAEMON_HOME=/opt/tomcat6/bin TOMCAT_USER=tomcat ... CATALINA_BASE=/opt/tomcat6 ... CATALINA_OPTS= ... # Start Tomcat # $DAEMON_HOME/jsvc \ ... # Stop Tomcat # $DAEMON_HOME/jsvc \ ... echo "Usage jsvc start/stop" # chmod +x /etc/init.d/jsvc # ln -s /etc/init.d/jsvc /etc/rc3.d/S50jsvc # ln -s /etc/init.d/jsvc /etc/rc0.d/K50jsvc 確認手順 OS を再起動する。 # init 6 Tomcat のプロセスが起動していることを確認する。 $ ps -ef|egrep "[t]omcat" root 669 1 0 06 19 47 ? 0 00 /opt/tomcat6/bin/jsvc -user tomcat -home /usr/java -Dcatalina.home=/opt/tomcat6 tomcat 670 669 0 06 19 47 ? 0 04 /opt/tomcat6/bin/jsvc -user tomcat -home /usr/java -Dcatalina.home=/opt/tomcat6 ブラウザからアクセスしてみる。 自動起動・停止スクリプト /etc/init.d/jsvc #!/bin/sh ############################################################################## # # Copyright 2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http //www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ############################################################################## # # Small shell script to show how to start/stop Tomcat using jsvc # If you want to have Tomcat running on port 80 please modify the server.xml # file # # # Connector className="org.apache.catalina.connector.http.HttpConnector" # port="80" minProcessors="5" maxProcessors="75" # enableLookups="true" redirectPort="8443" # acceptCount="10" debug="0" connectionTimeout="60000"/ # # That is for Tomcat-5.0.x (Apache Tomcat/5.0) # # Adapt the following lines to your configuration JAVA_HOME=/usr/java CATALINA_HOME=/opt/tomcat6 DAEMON_HOME=/opt/tomcat6/bin TOMCAT_USER=tomcat # for multi instances adapt those lines. TMP_DIR=/var/tmp PID_FILE=/var/run/jsvc.pid CATALINA_BASE=/opt/tomcat6 CATALINA_OPTS= CLASSPATH=\ $JAVA_HOME/lib/tools.jar \ $CATALINA_HOME/bin/commons-daemon.jar \ $CATALINA_HOME/bin/bootstrap.jar case "$1" in start) # # Start Tomcat # $DAEMON_HOME/jsvc \ -user $TOMCAT_USER \ -home $JAVA_HOME \ -Dcatalina.home=$CATALINA_HOME \ -Dcatalina.base=$CATALINA_BASE \ -Djava.io.tmpdir=$TMP_DIR \ -wait 10 \ -pidfile $PID_FILE \ -outfile $CATALINA_HOME/logs/catalina.out \ -errfile 1 \ $CATALINA_OPTS \ -cp $CLASSPATH \ org.apache.catalina.startup.Bootstrap # # To get a verbose JVM #-verbose \ # To get a debug of jsvc. #-debug \ exit $? ;; stop) # # Stop Tomcat # $DAEMON_HOME/jsvc \ -stop \ -pidfile $PID_FILE \ org.apache.catalina.startup.Bootstrap exit $? ;; *) echo "Usage jsvc start/stop" exit 1;; esac